﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using QuanLyKhachSan.Validation;
using DataAccess;

namespace QuanLyKhachSan
{
    public class QuocTichManager:IValidator<QuocTich>,ILenhThucThi<QuocTich>
    {
        public ValidateResult Validate(QuocTich obj)
        {
            ValidateResult vResult = new ValidateResult();
            if (obj.MaQT.Trim() == "")
            {
                vResult.Message.Add("Chưa nhập mã quốc tịch");
            }
            else
            {
                if (obj.MaQT.Trim().Length<3)
                {
                    vResult.Message.Add("Mã quốc tịch phải chứa đủ 3 kí tự");
                }
                if (obj.MaQT.Trim().Contains(' '))
                {
                    vResult.Message.Add("Mã quốc tịch không được phép chứa kí tự khoảng trắng");
                }
            }

            if (obj.TenQT.Trim() == "")
            {
                vResult.Message.Add("Chưa nhập tên quốc tịch");
            }
            return vResult;
        }

        public ActionResult Them(QuocTich obj)
        {
            ActionResult aResult=new ActionResult();
            using (QLKhachSanContext context = new QLKhachSanContext())
            {
                var query = from qt in context.QuocTiches
                            where qt.MaQT == obj.MaQT
                            select qt;
                if (query.Any())
                {
                    aResult.Exceptions.Add(new Exception("Mã quốc tịch đã tồn tại trong CSDL: "+obj.MaQT));
                }
                else
                {
                    try
                    {
                        context.QuocTiches.Add(obj);
                        context.SaveChanges();
                    }
                    catch (Exception ex)
                    {
                        aResult.Exceptions.Add(ex);
                    }
                }
                return aResult;
            }
        }

        public ActionResult Xoa(string ma)
        {
            throw new NotImplementedException();
        }

        public ActionResult CapNhat(QuocTich obj)
        {
            throw new NotImplementedException();
        }

        public ActionResultAsList<QuocTich> LayDanhSach()
        {
            ActionResultAsList<QuocTich> aResult = new ActionResultAsList<QuocTich>();
            using (QLKhachSanContext context = new QLKhachSanContext())
            {
                var query = from qt in context.QuocTiches
                            select qt;
                if (!query.Any())
                {
                    aResult.Exceptions.Add(new Exception("Không có quốc tịch nào trong danh sách"));
                }
            }
            return aResult;
        }


        public ActionResult Xoa(QuocTich ma)
        {
            throw new NotImplementedException();
        }
    }
}
